Barracuda Vulnerability Manager (BVM)を試してみた
はじめに
こんにちは。
くコ:彡がトレードマークの阿部です。
今回は、Barracuda Vulnerability Manager (BVM)をご紹介します。
概要
Barracuda Vulnerability Manager (BVM)とは
BVMは、Barracuda社が提供するウェブアプリの脆弱性スキャンサービスです。
グラフや表によるレポートの出力を行えるほか、検知した脆弱性をWAFに連携する事が出来ます。
BVMはSaaSとして提供され、アカウントを作成すればすぐに使い始める事が出来ます。
プレスリリースによると、期限付きで無償との事で2015年5月現在は無償で利用する事が出来ます。
スキャン対象(試験サイト)の準備
試験用のWEBサイト
こちらの記事でご紹介した、SQLインジェクション脆弱性を持つWebサイトを用意しました。
BVMを使って、SQLインジェクション脆弱性を検知出来るかを確認してみます。
セキュリティグループ
試験サイトに設定するセキュリティグループでBVMからのアクセスを許可します。
BVMが持つアドレス帯はこちらで公開されています。
サービス開始前のサイトであっても、安心してスキャン出来ますね。
今回設定したセキュリティグループは以下の通りです。
タイプ | 送信元 |
HTTP | 64.235.153.133 |
HTTP | 64.235.153.134 |
HTTP | 64.235.153.135 |
HTTP | 64.235.153.136 |
HTTP | 64.235.150.121 |
DNSドメイン
Route53を使ってhttp://www.○○○.classmethod.info
にて、WEBサイトにアクセスできるようにします。
Hosted zoneを作成し、Aレコードを登録します。
BVM設定
CloudControlのユーザ登録
BVMはCloudControlの機能として提供されます。CloudControlのユーザ作成を行いましょう。
http://login.barracuda.com
に接続し、[ユーザの作成]を選択します。
ユーザ登録の手順は一般的なウェブサイトと同様です。
CloudControlにログインし、左メニューから[Vulnerability Manager]を選択します。
電話番号、国、郵便番号を入力し、SIGN UPします。
スキャンには認証が必要
BVMの[Active Scans]タブ -> New Scanを選択します。
Scan名とScan URLを入力した所、ドメインがverifyされていない旨のエラーメッセージが表示されました。
悪意のあるユーザーが、むやみに他のWEBサイトをスキャン出来てしまったら問題です。
スキャンを行うドメイン宛てのverifyメールを受信出来る場合に、BVMを利用出来る仕組みになっています。
verifyメールの受信
ドメインにメールサーバがありメール受信が可能な場合、本作業は不要です。
テストに利用した○○○.classmethod.info
ドメインにはメールサーバが無いため、SESを利用してs3にメール受信出来るようにしました。
手順はDevIOの[新機能]Amazon SES でメール受信が出来るようになりました!または、Amazon Simple Email Service 開発者ガイドをご参照下さい。
受信したverifyメールは以下の通りです。該当のURLをコピー&ペーストすると、verifyが実行されます。
Scan設定
一度verifyしてしまえば、以降はverify無しでもスキャン出来るようです。
verify済みのURLを指定すると、緑のチェックマークが表示されました。
Generalタブでは、スキャン開始時刻やレポートを受け取るメールアドレスの指定などを行えます。
項目 | 内容 |
When to Scan | スキャンの即時実行 or スケジュール実行 |
Maximum Length of Scan (Hours) | スキャンの最大実行時間。 スキャンが終わっていなくても、時間に達したら終了する |
Email Report/Email Address | スキャン完了時のメール通知 |
Crawlingタブでは、クロールに利用するブラウザなどの指定を行います。
項目 | 内容 |
Browser(s) to crawl as | クロールに利用するブラウザの指定(FirefoxやIE等) iPhoneやAndroidの指定も可能 |
Requests | 秒間あたりのリクエスト数 |
Maximum crawl depth | スタートページからのクロールの深さ |
|
evasion techniquesの有効or無効 |
Authenticationタブでは、サイトの認証情報を設定します。
ログイン処理を伴うサイトであっても、認証情報を指定する事でスキャンが可能です。
対応する認証方式 |
Basic |
Digest |
NTLM |
HTMLフォーム |
こちらの記事で紹介したサイトの場合、以下のように設定します。
「Authentication test succeeded.」と表示されれば、OKです。
Exclusionsタブでは、除外設定が可能です。
項目 |
Exclude hostnames or IP addresses |
Exclude URL patterns |
Exclude file extensions |
Scan設定を行い、[Start Scan]を選択します。しばらく待つと、Scanが開始されます。
スキャン結果
メール通知
スキャン時にメール通知を有効にしている場合、以下のようなメールが送信されます。
スキャン結果のダウンロード
スキャン結果はBVM画面から確認出来るほか、「PDF」「XML」「CSV」の形式でエクスポートする事が出来ます。
スキャン結果の閲覧
BVM画面からスキャン結果を確認してみましょう。
Criticalな脆弱性が2件見つかりました。
検知した内容ごとに、重要度と確度が表示されます。
重要度 |
Critical |
High |
Medium |
Low |
False Positiv |
確度 |
Certain |
Likely |
Possible |
SQLインジェクションは、「Critical」「Likely」として検知されました。
WAFセットアップ
EC2作成
脆弱性のあるサイトに対して、Barracuda WAFを導入してみます。
AWS Marketplaceにて、WAFのAMIが提供されています。今回はこちらのBYOL版を使用しました。
EC2作成後、EIPを付与します。
セキュリティグループ
- Barracuda WAFに適用するセキュリティグループ(sg_waf)
タイプ | プロトコル | ポート範囲 | 送信元 |
HTTP | TCP | 80 | 0.0.0.0/0 |
カスタムTCPルール | TCP | 8000 | 拠点IPアドレス |
- WebServerに適用するセキュリティグループ(sg_webserver)
タイプ | プロトコル | ポート範囲 | 送信元 |
HTTP | TCP | 80 | sg_waf |
初期設定
Webブラウザからhttp://WAF-EIP:8000/
にアクセスします。
ライセンス設定画面表示されます。TokenとDefault Domainを入力し、Provisionを選択します。
ログイン画面が表示されますので、ユーザ[admin]、パスワード[インスタンスID]を入力します。
サービス登録
[基本設定] -> [サービス] を選択します。
サービス名(MyWebSite)及び、WAFとWebサーバのPrivateIPアドレスを入力し、[追加]を選択します。
DNSの切り替え
http://www.○○○.classmethod.info
に接続した時に、WAFを経由するようにDNSレコードを変更しましょう。
wwwのValueをWAFが持つEIPに設定します。
アクティブモード
WAFの検知モードを変更します。
基本設定 -> サービス -> MyWebSite(登録したサービス名) -> Edit -> 基本せュリティ -> モード -> アクティブを選択します。
デフォルトのパッシブモードは、侵入をロギングしますがブロックを行いません。
アクティブモードに変更し、攻撃をブロックします。
WAF経由でWEBサイトに接続してみる
パスワード欄に'OR 'A' = 'A
を指定してみましょう。
こちらの記事でご紹介した通り、WEBサイト単体の場合、全てのユーザーのメールアドレスが表示されました。
WAF経由でアクセスでは、The specified URL cannot be found.
と表示されました。
WAFのログを確認すると、SQLインジェクション攻撃をブロックした事がわかります。
WAFを導入した事でSQLインジェクションの被害を防ぐ事が出来ました。
スキャン結果のインポート
BVMでエクスポートとしたXMLファイルを、WAFにインポートしてみます。
ファームウェアアップデート
XMLのインポートはVersion8.1以上で対応しています。
お使いのファームウェアバージョンが古い場合、高度な設定 -> ファームウェア更新にてアップデートします。
インポート
高度な設定 -> 脆弱性レポートから、インポートする事が出来ます。
スキャナにBVMを指定して、XMLファイルを指定します。評価名はTestScanとしました。
インポートが完了したら、評価名と適用するサービスを指定します。
BindSQLInjectionについて、適用しました。重要度や内容を確認し必要なものを適用すると良さそうです。
インポート結果の確認
WEBサイト -> Webサイトプロファイルを確認すると、先ほどインポートした内容が作成されていました。
コメント欄には、BVMレポートによって作成された旨が記載されています。
参考
以下のページを参考にさせて頂きました。
おわりに
BVMによる脆弱性スキャンと、WAFへの設定インポートを試してみました。
スキャン結果をWAFにインポート出来るなんて、かなりイケてますね。
では、また。